#pragma once

#include<iostream>
#include<string>
#include<fstream>
#include<unordered_map>
#include"Log.hpp"

extern Log lg;
const std::string dictname = "./dict.txt";
const std::string sep = ":";

static bool Split(std::string &s,std::string *part1, std::string *part2){
    auto pos = s.find(sep);
    if(pos == std::string::npos) return false;
    *part1 = s.substr(0,pos);
    *part2 = s.substr(pos+1);
    return true;
}

// static bool Split(std::string &s, std::string *part1, std::string *part2)
// {
//     auto pos = s.find(sep);
//     if(pos == std::string::npos) return false;
//     *part1 = s.substr(0, pos);
//     *part2 = s.substr(pos+1);
//     return true;
// }


class Init{
public:
    Init(){
        std::ifstream in(dictname);//文件
        if(!in){
            std::cout<<"false1"<<std::endl;
        }
        if(!in.is_open()){
            std::cout<<"false2"<<std::endl;
            // lg是否存在?
            lg(Fatal,"ifstream open %s error",dictname.c_str());//打印？
            exit(1);
        }
        std::string line;
        while(std::getline(in,line)){
            std::string part1,part2;
            Split(line,&part1,&part2);
            dict.insert({part1,part2});
        }        
        in.close();
    }
    std::string tranlation(const std::string &key){
        auto iter = dict.find(key);
        if(iter == dict.end())  return  "Unknow";
        else return iter->second;
    }
private:
    std::unordered_map<std::string, std::string> dict;
};